﻿using FigureDraw.Shapes;
using FigureDraw.Shapes.DataFlowShape;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace FigureDraw.Diagram
{
    public class DataFlowDiagram : BlockDiagram
    {
        private static BlockDiagram diagram;

        private DataFlowDiagram() { }

        public static BlockDiagram Instance()
        {
            if (diagram == null)
                diagram = new DataFlowDiagram();

            return diagram;
        }

        public override MyShape DrawBegin(MyPoint startPoint, MyPoint endPoint)
        {
            return new BeginDataFlow(startPoint, endPoint);
        }

        public override MyShape DrawInput(MyPoint startPoint, MyPoint endPoint)
        {
            return new InputDataFlow(startPoint, endPoint);
        }

        public override MyShape DrawProcess(MyPoint startPoint, MyPoint endPoint)
        {
            return new ProcessDataFlow(startPoint, endPoint);
        }

        public override MyShape DrawOutput(MyPoint startPoint, MyPoint endPoint)
        {
            return new OutputDataFlow(startPoint, endPoint);
        }

        public override MyShape DrawMove(MyPoint startPoint, MyPoint endPoint)
        {
            return new MoveDataFlow(startPoint, endPoint);
        }

        public override MyShape DrawCondition(MyPoint startPoint, MyPoint endPoint)
        {
            return new ConditionDataFlow(startPoint, endPoint);
        }

        public override MyShape DrawEnd(MyPoint startPoint, MyPoint endPoint)
        {
            return new EndDataFlow(startPoint, endPoint);
        }

        
    }
}
